<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>留言板</title>
</head>
<body>
	<?php
		//声明一个变量保存文件名，在这个文件中保存留言信息
		$filename='text_data.txt';

		//判断用户是否按下按钮提交
		if(isset($_POST['sub'])){
			//接收表单内容并整合成一条 使用'||'分割 使用'<|>'结尾
			$message=$_POST['username'].'||'.$_POST['title'].'||'.$_POST['mess'].'<|>';
			writeMessage($filename,$message);//使用自定义函数将信息写入文件
		}

		if(file_exists($filename))
			readMessage($filename);

		//自定义函数向文件写入信息
		function writeMessage($filename,$message){
			$fp=fopen($filename,'a');
			if(flock($fp,LOCK_EX)){//排它锁锁定文件（写入）
				fwrite($fp,$message);
				flock($fp,LOCK_UN);//释放文件锁
			}else{
				echo '不能锁定文件';
			}

			fclose($fp);
		}

		//自定义函数遍历读取文件
		function readMessage($filename){
			$fp=fopen($filename,'r');
			flock($fp,LOCK_SH);//共享锁定（读取文件）
			$buffer="";
			while(!feof($fp)){
				$buffer.=fread($fp, 1024);
			}

			$data=explode('<|>',$buffer);

			foreach ($data as $key => $line){
				//将每行数据在分割
				@list($username,$title,$message)=explode('||',$line);
				//判断每部分是否为空
				if($username!="" && $title!="" && $message!=""){
					echo $username."说：";
					echo '&nbsp;'.$title.',';
					echo $message.'<hr>';
				}
			}
			flock($fp,LOCK_UN);
			fclose($fp);
		}
	?>

	<!-- 用户输入表单界面 -->
	<form action="" method="post">
		用户名: <input type="text" size="10" name="username"><br>
		标&nbsp;&nbsp;题: <input type="text" size="30" name="title"><br>
		<textarea name="mess" id="" cols="38" rows="4">请在这里留言</textarea>
		<input type="submit" name="sub" value="留言">
	</form>
</body>
</html>